(deftemplate dane_pasazera
	(slot zawartosc_portfela(type FLOAT))
)

(deftemplate akcja_pasazera
	(slot typ_akcji)
)

(deffacts akcje_pasazera
(akcja_pasazera(typ_akcji jazda))
(akcja_pasazera(typ_akcji plac))
(akcja_pasazera(typ_akcji dojechalem))
)

(defrule zaplac_kierowcy
	?k <- (osoba (nazwa taxiDriver))
	?p <- (osoba (nazwa taxiPassenger))
	?ko <- (koszt_przejazdu (cena ?cena))
	?o <- (dane_pasazera(zawartosc_portfela ?zp))
	(akcja_pasazera (typ_akcji plac))
	=>
	(assert (akcja_kierowcy (typ_akcji pobiera_kase))
	(modify ?o(zawartosc_portfela (- ?zp ?cena)))
	(assert (akcja_pasazera (typ_akcji dojechalem))) 
	(assert (akcja_kierowcy (typ_akcji kasuj_licznik))
)